package br.com.Bolao.model;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author frederico.cruz
 */
@Entity
@Table(name = "jogo")
@NamedQueries({@NamedQuery(name = "Jogo.findAll", query = "SELECT j FROM Jogo j"),
@NamedQuery(name = "Jogo.findByIdJogo", query = "SELECT j FROM Jogo j WHERE j.idJogo = :idJogo"),
@NamedQuery(name = "Jogo.findByDataJogo", query = "SELECT j FROM Jogo j WHERE j.dataJogo = :dataJogo"),
@NamedQuery(name = "Jogo.findByGolsTime1", query = "SELECT j FROM Jogo j WHERE j.golsTime1 = :golsTime1"),
@NamedQuery(name = "Jogo.findByGolsTime2", query = "SELECT j FROM Jogo j WHERE j.golsTime2 = :golsTime2")})
public class Jogo implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Basic(optional = false)
    @Column(name = "id_jogo")
    private Integer idJogo;
    @Column(name = "data_jogo")
    @Temporal(TemporalType.DATE)
    private Date dataJogo;
    @Column(name = "gols_time1")
    private Integer golsTime1;
    @Column(name = "gols_time2")
    private Integer golsTime2;
    @Column(name = "resultado")
    private Integer resultado;
    @Column(name = "data_limite")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataLimite;
    @Column(name = "marcacao_limite")
    private boolean marcacaoLimite;
    @JoinColumn(name = "time1", referencedColumnName = "id_equipe")
    @ManyToOne(optional = false)
    private Equipe time1;
    @JoinColumn(name = "time2", referencedColumnName = "id_equipe")
    @ManyToOne(optional = false)
    private Equipe time2;
    @OneToMany(mappedBy = "fkJogo")
    private Collection<Aposta> apostaCollection;

    public Jogo() {
    }

    public Jogo(Integer idJogo) {
        this.idJogo = idJogo;
    }

    public Integer getIdJogo() {
        return idJogo;
    }

    public void setIdJogo(Integer idJogo) {
        this.idJogo = idJogo;
    }

    public Integer getResultado() {
        return resultado;
    }

    public void setResultado(Integer resultado) {
        this.resultado = resultado;
    }

    public Date getDataJogo() {
        return dataJogo;
    }

    public void setDataJogo(Date dataJogo) {
        this.dataJogo = dataJogo;
    }

    public Integer getGolsTime1() {
        return golsTime1;
    }

    public void setGolsTime1(Integer golsTime1) {
        this.golsTime1 = golsTime1;
    }

    public Integer getGolsTime2() {
        return golsTime2;
    }

    public void setGolsTime2(Integer golsTime2) {
        this.golsTime2 = golsTime2;
    }

    public Equipe getTime1() {
        return time1;
    }

    public void setTime1(Equipe time1) {
        this.time1 = time1;
    }

    public Equipe getTime2() {
        return time2;
    }

    public void setTime2(Equipe time2) {
        this.time2 = time2;
    }

    public Collection<Aposta> getApostaCollection() {
        return apostaCollection;
    }

    public void setApostaCollection(Collection<Aposta> apostaCollection) {
        this.apostaCollection = apostaCollection;
    }

    public Date getDataLimite() {
        return dataLimite;
    }

    public void setDataLimite(Date dataLimite) {
        this.dataLimite = dataLimite;
    }

    public boolean isMarcacaoLimite() {
        return marcacaoLimite;
    }

    public void setMarcacaoLimite(boolean marcacaoLimite) {
        this.marcacaoLimite = marcacaoLimite;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idJogo != null ? idJogo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Jogo)) {
            return false;
        }
        Jogo other = (Jogo) object;
        if ((this.idJogo == null && other.idJogo != null) || (this.idJogo != null && !this.idJogo.equals(other.idJogo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.Bolao.model.Jogo[idJogo=" + idJogo + "]";
    }
}
